Skip to content

Restore SciMLOperators 1.24.4 compatibility floor - #3983

Merged
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:agent/fix-array-operator-w-cache
Jul 22, 2026
Merged

Restore SciMLOperators 1.24.4 compatibility floor#3983
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:agent/fix-array-operator-w-cache

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Please ignore this PR until reviewed by @ChrisRackauckas.

Summary

  • restore the OrdinaryDiffEqDifferentiation SciMLOperators floor from 1.24.3 to 1.24.4 and bump the package from 3.4.0 to 3.4.1
  • replace the obsolete InterfaceIII assertion that depended on WOperator._concrete_form with public behavioral checks
  • verify that calc_W! does not invoke an operator Jacobian's update callback, while public concretization and factorization produce the current W matrix
  • add SciMLOperators as a direct root test dependency so the test imports MatrixOperator from its owning package

Root cause

SciMLOperators commit d1f46ec / v1.24.4 intentionally changed in-place WOperator concretization for operator-typed Jacobians. No OrdinaryDiffEq caller maintains the internal concrete form for that case, so v1.24.3 returned the stale matrix constructed at gamma = 0; concrete linear solvers could consequently factorize an Inf matrix and silently compute incorrect implicit solutions. V1.24.4 reconstructs the public matrix representation at the current gamma.

The OrdinaryDiffEq companion commit 28e7eb52 originally required SciMLOperators 1.24.4, but the later downgrade-floor change 6b10b916 lowered the constraint to 1.24.3. The old InterfaceIII test also encoded the obsolete behavior and accessed the dependency's private _concrete_form field.

This is independent of LinearSolve 5. Untouched master reproduced with LinearSolve 4.3.0 and SciMLOperators 1.24.4.

Introducing-commit check

The same WOperator probe was run against the introducing commit and its direct parent:

57a69ab (SciMLOperators 1.24.3, parent of d1f46ec)
observed=[-Inf 0.0; 0.0 -Inf]
expected=[-3.0 0.0; 0.0 -2.0]
current=false
finite=false

d1f46ec (SciMLOperators 1.24.4)
observed=[-3.0 0.0; 0.0 -2.0]
expected=[-3.0 0.0; 0.0 -2.0]
current=true
finite=true

Validation

Untouched master at 8fc48e69d5:

GROUP=InterfaceIII julia +1.12 --project=. -e 'using Pkg; Pkg.test()'
LinearSolve v4.3.0
SciMLOperators v1.24.4
Derivative Utilities Tests: 10 passed, 2 failed

Both failures were the stale convert(AbstractMatrix, W) != concrete_W and stale-solve assertions.

This branch:

GROUP=InterfaceIII julia +1.12 --project=. -e 'using Pkg; Pkg.test()'
Derivative Utilities Tests: 11/11 passed
stats Tests: 14/14 passed
No Index Tests: 24/24 passed
Events + DAE addsteps Tests: 5/5 passed
Units Tests: 52 passed, 4 pre-existing broken
DEVerbosity Tests: 142/142 passed
Testing OrdinaryDiffEq tests passed

Whole-repository formatting:

julia +1.12 -e 'using Runic; exit(Runic.main(["--inplace", "."]))'
julia +1.12 -e 'using Runic; exit(Runic.main(["--check", "."]))'

Both Runic commands exited successfully.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Commit 4717bae9e3 is the focused clean-master follow-up. I reproduced the original failure under the official InterfaceIII harness with LinearSolve 4.3.0, tested SciMLOperators d1f46ec and its parent directly, then ran the repaired InterfaceIII group and whole-repository Runic locally. Exact outputs and commands are in the PR body.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

CI follow-up: all targeted InterfaceIII lanes passed (Julia release, LTS, and prerelease). Runic and Runic Suggestions also passed. The red downgrade jobs reproduce the existing lower-bound resolver failures tracked in #3917 / SciML/.github#118; for example, the Rosenbrock job pins LinearSolve 3.75 while its resolved NonlinearSolveBase requires LinearSolve >=4.3. No unrelated compatibility changes are included here.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Added commit e0dea9c to cover the duplicated StochasticDiffEq Interface3 expectation.

Clean upstream master 8fc48e6, Julia 1.12, SciMLOperators 1.24.4, LinearSolve 4.3.0:

ODEDIFFEQ_TEST_GROUP=Interface3 julia +1.12 --project=lib/StochasticDiffEq -e "using Pkg; Pkg.test()"
Utility Tests | 10 passed, 2 failed

The only failures were utility_tests.jl:66/68: both obsolete inequality assertions received the exact current matrix and solve result. This is the same behavior change introduced by SciMLOperators d1f46ec.

The new test stays on public behavior: it verifies calc_W! leaves the operator Jacobian update callback untouched, then verifies public concretization and factorization produce the expected W matrix. It removes the direct _concrete_form mutation and jacobian2W! call.

With this branch:

Utility Tests                   | 11/11 passed
Implicit Time Parameter Tests  | 9/9 passed
Non-diagonal SDE Tests          | 5 passed, 2 existing broken
Stochastic iterated integrals   | 66/66 passed
Sparse Diff Tests               | 5/5 passed
Testing StochasticDiffEq tests passed

Whole-repository Runic --inplace and --check both exited successfully.

@ChrisRackauckas
ChrisRackauckas marked this pull request as ready for review July 22, 2026 20:39
@ChrisRackauckas
ChrisRackauckas merged commit 8e20cb1 into SciML:master Jul 22, 2026
151 of 193 checks passed
ChrisRackauckas added a commit that referenced this pull request Jul 23, 2026
PR #3983 added SciMLOperators to [extras] and the test target but not to
[compat]. The Downgrade workflow floors uncapped test deps to their lowest
registered version (SciMLOperators 1.15.0), which conflicts with the in-repo
path sublibraries (OrdinaryDiffEqDifferentiation requires SciMLOperators
>= 1.24.4), making the test-target environment unsatisfiable. Adding the
compat floor fixes the umbrella Downgrade CI, red on master since #3983.

Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants